#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:
    int maxTurbulenceSize(vector<int>& nums) {
        int n = nums.size();
        vector<int> dp(n);
        if (n == 1) return 1;
        dp[0] = 1;
        if (nums[1] != nums[0])
        {
            dp[1] = 2;
        }
        else
        {
            dp[1] = 1;
        }
        int ret = dp[1] > dp[0] ? dp[1] : dp[0];
        for (int i = 2;i < n;i++)
        {
            if ((nums[i] > nums[i - 1] && nums[i - 2] > nums[i - 1]) || (nums[i] < nums[i - 1] && nums[i - 2] < nums[i - 1]))
            {
                dp[i] = dp[i - 1] + 1;
            }
            else if (nums[i] > nums[i - 1] || nums[i] < nums[i - 1])
            {
                dp[i] = 2;
            }
            else
            {
                dp[i] = 1;
            }
            ret = max(ret, dp[i]);
        }
        return ret;
    }
};